﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using App_Negocio;
using System.Security.Principal;
using System.Net.Mail;
using System.Net;

using System.IO;

using System.Net.Mime;

public partial class Agenda : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            IPrincipal p = HttpContext.Current.User;
            if (!p.IsInRole("Empleado"))
            {
                Session["Mensaje"] = "Usted no posee los permisos necesarios para ingresar a esta página";

                if (Session["Identificador"] != null)
                {
                    Session["IrAPagina"] = "Principal_Clientes.aspx";
                    Response.Redirect("Bienvenida.aspx");
                }
                else
                {
                    Response.Redirect("login.aspx");
                }
            }
            else
            {
                cargarAgenda();
            }
        }
    }
    
    public void cargarAgenda()
    {
        string empTipo = (string)Session["TipoEmpleado"];

        if (empTipo == "Encargado_Evento")
        {
            List<App_Negocio.Agenda> listaAgenda = App_Negocio.Agenda.listarActividadesAgenda_Lista("Evento");
            LinkedList<AgendaGUI> sAdList = new LinkedList<AgendaGUI>();

            foreach (App_Negocio.Agenda ag in listaAgenda)
            {
                App_Negocio.Agenda nuevo = ag;
                sAdList.AddLast(new AgendaGUI(nuevo));
            }
            
            listaAgenda = App_Negocio.Agenda.listarActividadesAgenda_Lista("Reunión");
            
            foreach (App_Negocio.Agenda ag in listaAgenda)
            {
                App_Negocio.Agenda nuevo = ag;
                sAdList.AddLast(new AgendaGUI(nuevo));
            }

           // listaAgenda.OrderBy<"Fecha">;
            gvAgenda.DataSource = sAdList;
            gvAgenda.DataBind();
            Session["Agenda"] = sAdList;
        }
        else 
        {
            List<App_Negocio.Agenda> listaAgenda = App_Negocio.Agenda.listarActividadesAgenda_Lista("Evento");
            LinkedList<AgendaGUI> sAdList = new LinkedList<AgendaGUI>();

            foreach (App_Negocio.Agenda ag in listaAgenda)
            {
                App_Negocio.Agenda nuevo = ag;
                sAdList.AddLast(new AgendaGUI(nuevo));
            }
            listaAgenda = App_Negocio.Agenda.listarActividadesAgenda_Lista("Reunión");

            //LinkedList<AgendaGUI> sAdList = new LinkedList<AgendaGUI>();

            foreach (App_Negocio.Agenda ag in listaAgenda)
            {
                App_Negocio.Agenda nuevo = ag;
                sAdList.AddLast(new AgendaGUI(nuevo));
            }
                       
            // listaAgenda.OrderBy<"Fecha">;
            gvAgenda.DataSource = sAdList;
            gvAgenda.DataBind();
            Session["Agenda"] = sAdList;        
        }          
    }

    protected void gvAgenda_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        gvAgenda.SelectedIndex = e.NewSelectedIndex;
        //  Seleccionado = new AgendaGUI();
        LinkedList<AgendaGUI> sAdList = (LinkedList<AgendaGUI>)Session["Agenda"];
        
        int next = sAdList.ElementAt<AgendaGUI>(gvAgenda.SelectedIndex).NroEvento;

        if (next == -1)
        {
            Session["ReunionId"] = sAdList.ElementAt<AgendaGUI>(gvAgenda.SelectedIndex).NroReunion;
            //Ir a ventana de ver Reunion!
            Response.Redirect("MostrarReunion.aspx");
        }
        else
        {
            Session["EventoId"] = sAdList.ElementAt<AgendaGUI>(gvAgenda.SelectedIndex).NroEvento;
           //Ir a ventana de ver Evento!
            Response.Redirect("Mostrar_Evento.aspx");
        }
    }

    private class AgendaGUI
    {
        private string actividad;

        public string Actividad
        {
            get { return actividad; }
            set { actividad = value; }
        }
        private string descripcion;

        public string Descripcion
        {
            get { return descripcion; }
            set { descripcion = value; }
        }
        private DateTime fecha;

        public DateTime Fecha
        {
            get { return fecha; }
            set { fecha = value; }
        }
        private DateTime fechaFin;

        public DateTime FechaFin
        {
            get { return fechaFin; }
            set { fechaFin = value; }
        }

        private int nroEvento;

        public int NroEvento
        {
            get { return nroEvento; }
            set { nroEvento = value; }
        }
        private int nroReunion;

        public int NroReunion
        {
            get { return nroReunion; }
            set { nroReunion = value; }
        }
       
        public AgendaGUI(App_Negocio.Agenda fuente)
        {
            this.Descripcion = fuente.Descripcion;
            if (fuente.Evento != null)
            {
                this.fecha = fuente.Evento.FechaEvento;
                this.fechaFin = fuente.FechaFin;//fuente.Evento.FechaEvento; // ESTO DEBERIA SER LA HORA DE FIN fuente.Evento.HoraFin;
               
                
                    this.Actividad = "Evento"; //+ fuente.Evento.Cliente.ApeCliente + " " + fuente.Evento.Cliente.NomCliente;
                
                    this.nroEvento = fuente.Evento.Id;
                this.nroReunion = -1;
            }
            else {
                this.fecha = fuente.Reunion.Fecha;
                this.fechaFin = fuente.FechaFin;//fuente.Reunion.Fecha;
                
                this.actividad = "Reunión";// + fuente.Reunion.Cliente.ApeCliente + " " + fuente.Reunion.Cliente.NomCliente;
                this.nroReunion = fuente.Reunion.Id;
                this.nroEvento = -1;
            }            
        }
    }

    protected void btnCerrar_Click(object sender, EventArgs e)
    {
        Response.Redirect("Principal_Empleados.aspx");
    }
}
